﻿using System;
using System.Windows.Forms;
using SistemaFinanceiro.classes.core;
using SistemaFinanceiro.classes.entidades;
using SistemaFinanceiro.gui.utils;

namespace SistemaFinanceiro.gui
{
    public partial class FrmCartao : Form
    {
        Fachada fachada = Fachada.Instancia;
        private Cartao cartaoSelecionado;

        public FrmCartao()
        {
            InitializeComponent();
        }

        private void bttnNovo_Click(object sender, EventArgs e)
        {
            FormUtils.LimparCampos(this);
            cartaoSelecionado = new Cartao();
            txtNumero.Focus();
        }

        private void CarregarFormulario(Cartao cartao)
        {
            txtNumero.Text = cartao.NumeroCartao;
            txtDescricao.Text = cartao.Descricao;
        }

        private void bttnSalvar_Click(object sender, EventArgs e)
        {
            cartaoSelecionado.NumeroCartao = txtNumero.Text;
            cartaoSelecionado.Descricao = txtDescricao.Text;
            cartaoSelecionado.DiaVencimentoFatura = Convert.ToInt32(txtVencimento.Text);
            cartaoSelecionado.LimiteCredito = Convert.ToDouble(txtLimite.Text);

            fachada.CartaoNegocio.Salvar(cartaoSelecionado);

            InicializarFormulario();
        }

        private void CarregarLista()
        {
            dataGrid.Rows.Clear();
            foreach (Cartao cartao in fachada.CartaoNegocio.Listar())
            {
                dataGrid.Rows.Add(new object[] { cartao.NumeroCartao, cartao.Descricao });
            }
        }

        private void FrmCartao_Load(object sender, EventArgs e)
        {
            InicializarFormulario();
        }

        private void InicializarFormulario()
        {
            FormUtils.LimparCampos(this);
            CarregarLista();
        }

        private void dataGrid_DoubleClick(object sender, EventArgs e)
        {
            DataGridViewRow row = dataGrid.CurrentRow;
            String numeroCartao = (String)row.Cells[0].Value;

            cartaoSelecionado = fachada.CartaoNegocio.ProcurarPorPropriedade("NumeroCartao", numeroCartao);
            txtNumero.Text = cartaoSelecionado.NumeroCartao;
            txtDescricao.Text = cartaoSelecionado.Descricao;
            txtVencimento.Text = cartaoSelecionado.DiaVencimentoFatura.ToString();
            txtLimite.Text = cartaoSelecionado.LimiteCredito.ToString();
        }

        private void bttnExcluir_Click(object sender, EventArgs e)
        {
            fachada.CartaoNegocio.Remover(cartaoSelecionado);
        }

    }
}
